home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / utility / freedos.zip / COM050.ZIP / PROMPT.C < prev    next >
C/C++ Source or Header  |  1996-01-17  |  3KB  |  153 lines

  1. /* 
  2.  *  PROMPT.C - prompt handling.
  3.  *
  4.  *
  5.  *
  6.  *  Comments:
  7.  *
  8.  *  14/01/95 (Tim Normal) ---------------------------------------------------
  9.  *    started.
  10.  *  
  11.  *  08/08/95 (Matt Rains) ---------------------------------------------------
  12.  *    i have cleaned up the source code. changes now bring this source into
  13.  *    guidelines for recommended programming practice.
  14.  *
  15.  *  01/06/96 (Tim Norman) --------------------------------------------
  16.  *    added day of the week printing (oops, forgot about that!)
  17.  *
  18.  */
  19.  
  20. #include <stdio.h>
  21. #include <stdlib.h>
  22. #include <conio.h>
  23. #include <dos.h>
  24. #include <ctype.h>
  25. #include <dir.h>
  26. #include <string.h>
  27.  
  28. static char days[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
  29.  
  30. /*
  31.  *
  32.  * print the command-line prompt
  33.  *
  34.  */
  35. void printprompt(void)
  36. {
  37.    struct time t;
  38.    struct dosdate_t d;
  39.  
  40.    static char default_pr[] = "$P$G";
  41.    char *pr;
  42.    char direc[128];
  43.    char temp[128];
  44.  
  45.    pr = getenv("PROMPT"); /* get PROMPT environment var. */
  46.  
  47.    if(!pr || !pr[0]) /* if PROMPT hasn't been set */
  48.    {
  49.       pr = default_pr;
  50.    }
  51.  
  52.    while(*pr)
  53.    {
  54.       if(*pr != '$')
  55.       {
  56.          putchar (*pr);
  57.       }
  58.       else
  59.       {
  60.          pr++;
  61.  
  62.          switch(toupper(*pr))
  63.          {
  64.             case 'Q' :
  65.             {
  66.                putchar ('=');
  67.                break;
  68.             }
  69.             case '$' :
  70.             {
  71.                putchar('$');
  72.                break;
  73.             }
  74.             case 'T' :
  75.             {
  76.                gettime(&t);
  77.                printf("%2d:%02d:%02d.%02d", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
  78.                break;
  79.             }
  80.             case 'D' :
  81.             {
  82.            _dos_getdate (&d);
  83.            printf("%s %02d-%02d-%04d", days[d.dayofweek], d.month,
  84.               d.day, d.year);
  85.                break;
  86.             }
  87.             case 'P' :
  88.             {
  89.                direc[0] = getdisk() + 'A';
  90.                direc[1] = ':';
  91.                getcurdir(0, temp);
  92.                
  93.                if(temp[0] == '\\')
  94.                {
  95.                   strcpy(&direc[2], temp);
  96.                }
  97.                else
  98.                {
  99.                   direc[2] = '\\';
  100.                   strcpy(&direc[3], temp);
  101.                }
  102.          
  103.                printf("%s", direc);
  104.                break;
  105.             }
  106.             case 'V' :
  107.             {
  108.                printf("FreeDOS Alpha");
  109.                break;
  110.             }
  111.             case 'N' :
  112.             {
  113.                printf("%c", getdisk () + 'A');
  114.                break;
  115.             }
  116.             case 'G' : 
  117.             {
  118.                putchar('>');
  119.                break;
  120.             }
  121.             case 'L' :
  122.             {
  123.                putchar('<');
  124.                break;
  125.             }
  126.             case 'B' :
  127.             {
  128.                putchar('|');
  129.                break;
  130.             }
  131.             case '_' :
  132.             {
  133.                putchar('\n');
  134.                break;
  135.             }
  136.             case 'E' :
  137.             {
  138.                putchar(27);
  139.                break;
  140.             }
  141.             case 'H' :
  142.             {
  143.                putchar(8);
  144.                break;
  145.             }
  146.          }
  147.       }
  148.       pr++;
  149.    }
  150.  
  151.    return;
  152. }
  153.